package swift.core.magic
{
	import org.aisy.interfaces.IClear;
	
	use namespace magic_internal;

	/**
	 * 
	 * 语句块
	 * 
	 */
	internal class MagicBlockData implements IClear
	{
		/**
		 * 块类型
		 */
		magic_internal var type:uint;
		/**
		 * 开始行号
		 */
		magic_internal var start:uint;
		/**
		 * 结束行号
		 */
		magic_internal var end:uint;
		/**
		 * 此语句块内的子语句块集合
		 */
		magic_internal var blockV:Vector.<MagicBlockData>;
		/**
		 * 和此语句块具有线性关系的后续语句块集合（如：if => elseif => else，elseif 和 else 存在于 if 的 next 中）
		 */
		magic_internal var nextV:Vector.<MagicBlockData>;
		/**
		 * 父级语句块（如：if 属于 function，else 属于 if）
		 */
		magic_internal var parent:MagicBlockData;
		/**
		 * 当前执行到的语句块的索引（对应于 blockV）
		 */
		magic_internal var blockIndex:uint;
		/**
		 * 当前执行到的下一级的语句块的索引（对应于 next）
		 */
		magic_internal var nextIndex:uint;
		/**
		 * 标记当前语句块是否可以执行
		 */
		magic_internal var flag:Boolean;
		
		public function MagicBlockData()
		{
		}
		
		public function clear():void
		{
			if (null !== blockV) {
				for (var i:uint = 0, l:uint = blockV.length; i < l; i++) {
					blockV[i].clear();
				}
				blockV = null;
			}
			if (null !== nextV) {
				for (i = 0, l = nextV.length; i < l; i++) {
					nextV[i].clear();
				}
				nextV = null;
			}
			parent = null;
		}
		
	}
}

internal namespace magic_internal = "213384665b731cdf2fe17d13266786f65ceee0e1ab799e0ee704860761556606";